package com.mercury.ec.module.air.controller.admin.demandorder.vo.demandprice;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.mercury.ec.framework.excel.core.annotations.DictFormat;
import com.mercury.ec.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 机票需求订单方案价格 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AirDemandPriceRespVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19188")
    private Long id;

    @Schema(description = "需求订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4310")
    private Long demandId;

    @Schema(description = "方案id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22079")
    private Long demandSchemeId;

    @Schema(description = "行程id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16485")
    private Long demandRouteId;

    @Schema(description = "乘客类型 字典（system_passenger_type 1-成人/2-儿童/3-婴儿）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty(value = "乘客类型", converter = DictConvert.class)
    @DictFormat("system_passenger_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer passengerType;

    @Schema(description = "采购附加费", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购附加费")
    private BigDecimal purchaseAdditionalFee;

    @Schema(description = "采购服务费", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购服务费")
    private BigDecimal purchaseServiceFee;

    @Schema(description = "采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "4446")
    @ExcelProperty("采购票面价")
    private BigDecimal purchaseTicketPrice;

    @Schema(description = "采购价", requiredMode = Schema.RequiredMode.REQUIRED, example = "11881")
    @ExcelProperty("采购价")
    private BigDecimal purchasePrice;

    @Schema(description = "采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购机建税")
    private BigDecimal purchaseAirportTax;

    @Schema(description = "采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购燃油税")
    private BigDecimal purchaseOilTax;

    @Schema(description = "采购税", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购税")
    private BigDecimal purchaseTax;

    @Schema(description = "采购代理费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购代理费率")
    private BigDecimal purchaseAgencyFeeRate;

    @Schema(description = "采购代理费", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购代理费")
    private BigDecimal purchaseAgencyFee;

    @Schema(description = "采购后返费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购后返费率")
    private BigDecimal purchaseBackRebateFeeRate;

    @Schema(description = "采购后返费", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购后返费")
    private BigDecimal purchaseBackRebateFee;

    @Schema(description = "采购记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "25926")
    @ExcelProperty("采购记奖价")
    private BigDecimal purchasePrizePrice;

    @Schema(description = "采购记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购记奖税")
    private BigDecimal purchasePrizeTax;

    @Schema(description = "采购金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购金额")
    private BigDecimal purchaseAmount;

    @Schema(description = "采购应付", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购应付")
    private BigDecimal purchasePayable;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "创建人")
    private String creator;
}
